package com.bigpang.framework.JdkDynamicProxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @Author YongQiang
 * @Date 2021/7/13 14:06
 * @Version 1.0
 */
public class MyInvocationHandler implements InvocationHandler {

    /**
     * 目标对象
     */
    private Object target;

    public MyInvocationHandler(Object target) {
        this.target = target;
    }

    /**
     *
     * @param proxy 代理目标对象的代理对象，它是真实的代理对象。
     * @param method 执行目标类的方法
     * @param args 执行目标类的方法的参数
     * @return
     * @throws Throwable
     */
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("插入前置代码");
        Object rs = method.invoke(target, args);
        System.out.println("插入后置代码");
        return rs;
    }
}
